﻿using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Text;
using System.Text;
using System.Text.RegularExpressions;

namespace YJKRevitTextUtil
{
	public class Common
	{
		public static List<string> GetWindowsFontNames()
		{
			FontFamily[] families = new InstalledFontCollection().Families;
			List<string> list = new List<string>();
			int num = families.Length;
			for (int i = 0; i < num; i++)
			{
				string name = families[i].Name;
				list.Add(name);
			}
			list.Reverse();
			return list;
		}

		public static Dictionary<string, List<string>> GetSpecialCharacters()
		{
			Dictionary<string, List<string>> dictionary = new Dictionary<string, List<string>>();
			List<string> value = new List<string>(new string[]
			{
				"Α",
				"Β",
				"Γ",
				"Δ",
				"Ε",
				"Ζ",
				"Η",
				"Θ",
				"Ι",
				"Κ",
				"Λ",
				"Μ",
				"Ν",
				"Ξ",
				"Ο",
				"Π",
				"Ρ",
				"Σ",
				"Τ",
				"Υ",
				"Φ",
				"Χ",
				"Ψ",
				"Ω",
				"α",
				"β",
				"γ",
				"δ",
				"ε",
				"ζ",
				"η",
				"θ",
				"ι",
				"κ",
				"λ",
				"μ",
				"ν",
				"ξ",
				"ο",
				"π",
				"ρ",
				"σ",
				"τ",
				"υ",
				"φ",
				"χ",
				"ψ",
				"ω"
			});
			dictionary.Add("希腊字母", value);
			List<string> value2 = new List<string>(new string[]
			{
				"≡",
				"≈",
				"＝",
				"≤",
				"≥",
				"＜",
				"＞",
				"≮",
				"≯",
				"∷",
				"±",
				"＋",
				"－",
				"×",
				"÷",
				"／",
				"∫",
				"∮",
				"∝",
				"∞",
				"∧",
				"∨",
				"∑",
				"∏",
				"∪",
				"∩",
				"∈",
				"∵",
				"∴",
				"⊥",
				"∥",
				"∠",
				"⌒",
				"⊙",
				"≌",
				"∽",
				"√"
			});
			dictionary.Add("数学符号", value2);
			List<string> value3 = new List<string>(new string[]
			{
				"Ⅰ",
				"Ⅱ",
				"Ⅲ",
				"Ⅳ",
				"Ⅴ",
				"Ⅵ",
				"Ⅶ",
				"Ⅷ",
				"Ⅸ",
				"Ⅹ",
				"Ⅺ",
				"Ⅻ",
				"ⅰ",
				"ⅱ",
				"ⅲ",
				"ⅳ",
				"ⅴ",
				"ⅵ",
				"ⅶ",
				"ⅷ",
				"ⅸ",
				"ⅹ"
			});
			dictionary.Add("罗马数字", value3);
			List<string> value4 = new List<string>(new string[]
			{
				"⒈",
				"⒉",
				"⒊",
				"⒋",
				"⒌",
				"⒍",
				"⒎",
				"⒏",
				"⒐",
				"⒑",
				"⒒",
				"⒓",
				"⒔",
				"⒕",
				"⒖",
				"⒗",
				"⒘",
				"⒙",
				"⒚",
				"⒛",
				"⑴",
				"⑵",
				"⑶",
				"⑷",
				"⑸",
				"⑹",
				"⑺",
				"⑻",
				"⑼",
				"⑽",
				"⑾",
				"⑿",
				"⒀",
				"⒁",
				"⒂",
				"⒃",
				"⒄",
				"⒅",
				"⒆",
				"⒇",
				"①",
				"②",
				"③",
				"④",
				"⑤",
				"⑥",
				"⑦",
				"⑧",
				"⑨",
				"⑩",
				"㈠",
				"㈡",
				"㈢",
				"㈣",
				"㈤",
				"㈥",
				"㈦",
				"㈧",
				"㈨",
				"㈩"
			});
			dictionary.Add("数字序号", value4);
			List<string> value5 = new List<string>(new string[]
			{
				"。",
				"，",
				"、",
				"；",
				"：",
				"？",
				"！",
				"．",
				"∶",
				"…",
				"—",
				"·",
				"ˉ",
				"ˇ",
				"‘",
				"’",
				"“",
				"”",
				"々",
				"～",
				"‖",
				"＂",
				"＇",
				"｀",
				"｜",
				"〃",
				"¨",
				"〔",
				"〕",
				"〈",
				"〉",
				"《",
				"》",
				"「",
				"」",
				"『",
				"』",
				"〖",
				"〗",
				"【",
				"】",
				"（",
				"）",
				"［",
				"］",
				"｛",
				"｝"
			});
			dictionary.Add("标点符号", value5);
			List<string> value6 = new List<string>(new string[]
			{
				"°",
				"′",
				"″",
				"＄",
				"￡",
				"￥",
				"‰",
				"％",
				"℃",
				"¤",
				"￠",
				"§",
				"№",
				"☆",
				"★",
				"○",
				"●",
				"◎",
				"◇",
				"◆",
				"□",
				"■",
				"△",
				"▲",
				"※",
				"→",
				"←",
				"↑",
				"↓",
				"〓",
				"＃",
				"＆",
				"＠",
				"＼",
				"＾",
				"＿",
				"￣",
				"▼",
				"▽"
			});
			dictionary.Add("特殊符号", value6);
			return dictionary;
		}

		public static System.Drawing.Color IntToRgbColor(int colorInt)
		{
			int red = colorInt & 255;
			int green = colorInt >> 8 & 255;
			int blue = colorInt >> 16 & 255;
			return System.Drawing.Color.FromArgb(red, green, blue);
		}

		public static int RgbColorToInt(System.Drawing.Color colorRgb)
		{
			return (int)colorRgb.B << 16 | (int)((ushort)((int)colorRgb.G << 8 | (int)colorRgb.R));
		}

		public static bool IsNumAndEnCh(string input)
		{
			return new Regex("^[A-Za-z0-9]+$").IsMatch(input);
		}

		public static int GetLength(string str)
		{
			if (str.Length == 0)
			{
				return 0;
			}
			Encoding encoding = new ASCIIEncoding();
			int num = 0;
			byte[] bytes = encoding.GetBytes(str);
			for (int i = 0; i < bytes.Length; i++)
			{
				if (bytes[i] == 63)
				{
					num += 2;
				}
				else
				{
					num++;
				}
			}
			return num;
		}

		public static Guid g_DataGuid = new Guid("CF249A30-9900-4F35-885C-C4BEF16F0064");
	}
}
